﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Intelsi.Entity;


namespace Intelsi.DataAcces
{
    public class ProyectoDAO: MasterDataAccess, IProyectoDAO
    {
        public List<Proyecto> GetAllFromProyecto()
        {
            var query = from p in Context.Proyectoes
                        orderby p.IdProyecto
                        select p;

            return query.ToList();
        }

        public List<Proyecto> GetAllFromProyectoByCriterio(string criterio)
        {
            var query = from p in Context.Proyectoes
                        select p;

            if (criterio != null)
            {
                query = query.Where(p => p.Descripcion.ToUpper().StartsWith(criterio.ToUpper()) ||
                                        p.Descripcion.ToUpper().Contains(criterio.ToUpper()) ||
                                        p.Empresa.ToUpper().StartsWith(criterio.ToUpper()) ||
                                        p.Empresa.ToUpper().Contains(criterio.ToUpper()) ||
                                        p.OrdenServicio.ToUpper().StartsWith(criterio.ToUpper()) ||
                                        p.OrdenServicio.ToUpper().Contains(criterio.ToUpper())

                    );

            }

            return query.OrderBy(p => p.IdProyecto).ToList();
        }

        public Proyecto GetAllFromProyectoById(int id)
        {
            return Context.Proyectoes.Find(id);
        }

        public void AddProyecto(Proyecto proyecto)
        {
            var existe1 = proyecto.IdProyecto == 0;
            if (existe1 == true)
            {
                proyecto.Comentario = proyecto.Comentario;
                proyecto.Costo = proyecto.Costo;
                proyecto.Descripcion = proyecto.Descripcion;
                proyecto.Empresa = proyecto.Empresa;
                proyecto.Estado = proyecto.Estado;
                proyecto.FechaFin = proyecto.FechaFin;
                proyecto.FechaInicio = proyecto.FechaInicio;
                proyecto.Moneda = proyecto.Moneda;
                proyecto.OrdenServicio = proyecto.OrdenServicio;
                proyecto.PlazoDeEjecucion = proyecto.PlazoDeEjecucion;
                

                Context.Proyectoes.Add(proyecto);
                Context.SaveChanges();
            }
        }

        public void ActualizarProyecto(Proyecto proyecto)
        {
            var existe = (from p in Context.Proyectoes
                          where p.IdProyecto == proyecto.IdProyecto
                          select p).SingleOrDefault();
            if (existe != null)
            {
                existe.Comentario = proyecto.Comentario;
                existe.Costo = proyecto.Costo;
                existe.Descripcion = proyecto.Descripcion;
                existe.Empresa = proyecto.Empresa;
                existe.Estado = proyecto.Estado;
                existe.FechaFin = proyecto.FechaFin;
                existe.FechaInicio = proyecto.FechaInicio;
                existe.Moneda = proyecto.Moneda;
                existe.OrdenServicio = proyecto.OrdenServicio;
                existe.PlazoDeEjecucion = proyecto.PlazoDeEjecucion;

                Context.Entry(existe).State = System.Data.EntityState.Modified;
                Context.SaveChanges();
            }
        }
    }
}
